  function   [V, objective ]=LpCSNMF(X,Options)
      X=X';  
    [~,n]=size(X);
    A = constructW_PKN(X, Options.p,1);
    Dv = diag(sum(A, 2));  
    Y=zeros(n, Options.SelectClasses);
    for i=1:Options.SampNum
          Y(i,Options.SampGnd(i))=1;
     end
      V = rand(n, Options.SelectClasses);
      objective=[];
      for iters = 1:Options.maxIter
           V(1: Options.SampNum,:)= Y(1: Options.SampNum,:);
           objective(iters)=sum(sum((A- V*V').^2))+Options.alpha*trace(V'*(Dv-A)*V);
           V=V.*((A*V+Options.alpha*A*V)./(V*V'*V+Options.alpha*Dv*V+eps));
      end
  end
 
